// @ts-nocheck
import { Middleware } from '@nuxt/types'
// _ctx = { store, route, redirect, params, query, req, res, ... } 
const myMiddleware: Middleware = async (_ctx) => {
    // console.log('_ctx', _ctx)
    // 在跳转页面之前(地址栏刷新跳转)、判断地址栏中如果存在accessToken，则保存到vuex中
    const accessToken = _ctx.route.query.accessToken
    console.log(' _ctx.route.query.accessToken', accessToken)
    if (accessToken) {
        console.log('持久化 accessToken')
        // 持久化accessToken
        _ctx.store.commit('SET_TOKEN', accessToken)
    }
    // 获取用户信息，并持久化
    const userInfo =  (await _ctx.$apis.auth.getUserInfo()).data
    console.log('userInfo =', userInfo)
    _ctx.store.commit('SET_USERINFO', userInfo)
    console.log(`_ctx.$cookies.get('_store')=888`, _ctx.$cookies)
    // 持久化国际化
    // if (_ctx.route && _ctx.route.name) {
    //         // article-id___zh_cn
    //      const reg = /___(zh_cn|en)$/
    //     const result = _ctx.route.name.match(reg)
    //     // console.log(result)
    //     if (result && result[1]) {
    //         // 持久化语言
    //         _ctx.store.commit('app/SET_LANGUAGE', result[1])
    //     }
    // }
    // 1、在跳转页面之前、将cookie中存储的_store信息存储到vuex中
    _ctx.store && _ctx.store.commit('SET_STATE', _ctx.$cookies.get('_store') || {})
    // 2、过滤掉不鉴权的白名单
    if (_ctx.route && _ctx.route.name) {
        if (_ctx.route.name.startsWith('admin')) {
            // 3、携带token获取用户信息
            // 4、如果token失效，则跳转到登录页
            // 非超级管理员用户无法进入后台管理系统页面
            if (!userInfo || userInfo.auth !== 1) {
                _ctx.redirect('/login')
                return false
            }
        }
        
    }
    
}
export default myMiddleware